<?php
include "LectureSpider.php";
set_time_limit(0);
/**
 * Created by God-Jie.
 * 爬虫控制类
 */

class SpiderMain
{
    function Test(){
        return "Test";
    }

    /*
     * 总控，返回全部讲座信息的二维关联数组$ino_all
     * @return
     */
    function main()
    {
        $match_arr = $this->Matcher();
        $infos_all = array();  //全部讲座的汇总
        $spider = new  LectureSpider();
        for ($i = 0; $i < count($match_arr); $i++) {
            //$info_each一个网站的全部讲座信息
            $info_each = $spider->get_lecture_info($match_arr[$i]["url"], $match_arr[$i]["pattern"]);
            $infos_all = array_merge($infos_all, $info_each);
            echo "**第" . ($i + 1) . "个网站结束.**" . "<br/>";
        }

        //加入图书馆全年讲座与培训
        $lib = array("title"=>"图书馆2017年讲座与培训","date"=>date("Y-m-d"),"url"=>"http://www.lib.whu.edu.cn/web/index.asp?menu=v&obj_id=721&r=50036");
        $infos_all[] = $lib;

        //按照日期降序排列
        foreach ($infos_all as $key => $value) {
            $temp[]=$value['date'];
        }
        array_multisort($temp,SORT_DESC,$infos_all);

        return $infos_all;
    }

    /*
     * 控制不同网站链接和正则表达式
     * @return url和正则对应的二维数组
     */
    function Matcher()
    {
        $url_all = array(
            'http://www.whu.edu.cn/tzgg.htm',
            'http://art.whu.edu.cn/index/note/',
            'http://www.history.whu.edu.cn/about.asp?type=183',
            'http://guoxue.whu.edu.cn/index.php/news/index/cateid/2',  //国学院
            'http://philosophy.whu.edu.cn/xwzx/ywgg.htm',  //哲学院
            'http://shxx.whu.edu.cn/site/shxx/ShowClass.jsp?id=1202&pn=1',  //社会学系
            'http://eis.whu.edu.cn/newListLogic.shtml?newskindid=20160320222451971Kr4GUfAYPfLGk',  //电信
            'http://xuerentang.sinaapp.com/newslist.php?vid=300010',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300006',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300007',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300005',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300013',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300015',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300017',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300018',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300020',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300022',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300026',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300034',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300037',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300038',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300043',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300049',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300050',
            'http://xuerentang.sinaapp.com/newslist.php?vid=300058',
        );

        //不同正则
        $pattern_all = array(
            '/<a[^>]+?href="[\.]*[\/]?([^"]*)".*>(.*)(讲座|讲坛|报告|论坛)([^<]*).*<\/a>/',  //前三个
            '/<a[^>]*?href=\"\/([^\"]*?)\"[^>]*?>([^\.]*?)(讲座|讲坛|报告|论坛)([^\.]*)<\/a>/',  //国学院
            '/<a[^>]+href=\"[\.]*[\/]([^\"]*)\".*?>([^<>]*)(讲座|讲坛|报告|论坛)([^<>]*)<\/a>/i',  //哲学院
            '/<a[^>]+href=\"(.*?)\"[^>]*>(?:<font[^>]*?>){1,}([^<]*)(讲座|讲坛|报告|论坛)([^<]*)(?:<\/font>){1,}<\/a>/i',  //社会学系
            '/<a[^>]+href=\"(.*)\"[^>]>[\s\S]*?[<]?span[>]?([^<]*)(讲座|讲坛|报告|论坛)([^<]*)<\/span>[\s\S]*?<\/a>/i',  //电信
            '/<a[^>]+href=\'([^\']*)\'\s*>([^<]*)(讲座|讲坛|报告|论坛)([^<>]*)<\/a>/'  //学人堂
        );

        //不同网站对应各自正则
        for ($i = 0; $i < count($url_all); $i++) {
            if ($i <= 2) {
                $pattern = $pattern_all[0];
            } else {
                switch ($i) {
                    case 3:
                        $pattern = $pattern_all[1];
                        break;
                    case 4:
                        $pattern = $pattern_all[2];
                        break;
                    case 5:
                        $pattern = $pattern_all[3];
                        break;
                    case 6:
                        $pattern = $pattern_all[4];
                        break;
                    default:
                        $pattern = $pattern_all[5];
                        break;
                }
            }

            //url和正则相对应的数组
            $match[$i]["url"] = $url_all[$i];
            $match[$i]["pattern"] = $pattern;

        }
        return $match;
    }
}
